using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;

namespace SlasheneFramework.WCF
{
	public abstract class ProxyInputChannel : IInputChannel
	{
		public ProxyInputChannel(IInputChannel inner)
		{
			_InnerInputChannel = inner;
		}
		private readonly IInputChannel _InnerInputChannel;

		public virtual System.ServiceModel.EndpointAddress LocalAddress
		{
			get
			{
				return _InnerInputChannel.LocalAddress;
			}
		}
		public virtual System.ServiceModel.CommunicationState State
		{
			get
			{
				return _InnerInputChannel.State;
			}
		}
		public virtual event System.EventHandler Closed
		{

			add
			{
				_InnerInputChannel.Closed += value;
			}

			remove
			{
				_InnerInputChannel.Closed -= value;
			}
		}
		public virtual event System.EventHandler Closing
		{

			add
			{
				_InnerInputChannel.Closing += value;
			}

			remove
			{
				_InnerInputChannel.Closing -= value;
			}
		}
		public virtual event System.EventHandler Faulted
		{

			add
			{
				_InnerInputChannel.Faulted += value;
			}

			remove
			{
				_InnerInputChannel.Faulted -= value;
			}
		}
		public virtual event System.EventHandler Opened
		{

			add
			{
				_InnerInputChannel.Opened += value;
			}

			remove
			{
				_InnerInputChannel.Opened -= value;
			}
		}
		public virtual event System.EventHandler Opening
		{

			add
			{
				_InnerInputChannel.Opening += value;
			}

			remove
			{
				_InnerInputChannel.Opening -= value;
			}
		}

		public virtual System.ServiceModel.Channels.Message Receive()
		{
			return _InnerInputChannel.Receive();
		}
		public virtual System.ServiceModel.Channels.Message Receive(System.TimeSpan timeout)
		{
			return _InnerInputChannel.Receive(timeout);
		}
		public virtual System.IAsyncResult BeginReceive(System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginReceive(callback, state);
		}
		public virtual System.IAsyncResult BeginReceive(System.TimeSpan timeout, System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginReceive(timeout, callback, state);
		}
		public virtual System.ServiceModel.Channels.Message EndReceive(System.IAsyncResult result)
		{
			return _InnerInputChannel.EndReceive(result);
		}
		public virtual System.Boolean TryReceive(System.TimeSpan timeout, out System.ServiceModel.Channels.Message message)
		{
			return _InnerInputChannel.TryReceive(timeout, out message);
		}
		public virtual System.IAsyncResult BeginTryReceive(System.TimeSpan timeout, System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginTryReceive(timeout, callback, state);
		}
		public virtual System.Boolean EndTryReceive(System.IAsyncResult result, out System.ServiceModel.Channels.Message message)
		{
			return _InnerInputChannel.EndTryReceive(result, out message);
		}
		public virtual System.Boolean WaitForMessage(System.TimeSpan timeout)
		{
			return _InnerInputChannel.WaitForMessage(timeout);
		}
		public virtual System.IAsyncResult BeginWaitForMessage(System.TimeSpan timeout, System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginWaitForMessage(timeout, callback, state);
		}
		public virtual System.Boolean EndWaitForMessage(System.IAsyncResult result)
		{
			return _InnerInputChannel.EndWaitForMessage(result);
		}
		public virtual T GetProperty<T>() where T : class
		{
			return _InnerInputChannel.GetProperty<T>();
		}
		public virtual void Abort()
		{
			_InnerInputChannel.Abort();
		}
		public virtual void Close()
		{
			_InnerInputChannel.Close();
		}
		public virtual void Close(System.TimeSpan timeout)
		{
			_InnerInputChannel.Close(timeout);
		}
		public virtual System.IAsyncResult BeginClose(System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginClose(callback, state);
		}
		public virtual System.IAsyncResult BeginClose(System.TimeSpan timeout, System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginClose(timeout, callback, state);
		}
		public virtual void EndClose(System.IAsyncResult result)
		{
			_InnerInputChannel.EndClose(result);
		}
		public virtual void Open()
		{
			_InnerInputChannel.Open();
		}
		public virtual void Open(System.TimeSpan timeout)
		{
			_InnerInputChannel.Open(timeout);
		}
		public virtual System.IAsyncResult BeginOpen(System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginOpen(callback, state);
		}
		public virtual System.IAsyncResult BeginOpen(System.TimeSpan timeout, System.AsyncCallback callback, System.Object state)
		{
			return _InnerInputChannel.BeginOpen(timeout, callback, state);
		}
		public virtual void EndOpen(System.IAsyncResult result)
		{
			_InnerInputChannel.EndOpen(result);
		}
	}
}
